package model

import (
	"gorm.io/gorm"
	"time"
)

// 文档分类枚举（固定分类：技术笔记/生活随笔）
const (
	CategoryTech  = "tech"  // 技术笔记
	CategoryLife  = "life"  // 生活随笔
	CategoryOther = "other" // 其他
)

type Doc struct {
	ID        uint           `gorm:"primaryKey" json:"id"`
	Title     string         `gorm:"column:title;type:varchar(100);not null" json:"title"`      // 文档标题
	Content   string         `gorm:"column:content;type:text;not null" json:"content"`          // Markdown内容
	Category  string         `gorm:"column:category;type:varchar(20);not null" json:"category"` // 新增：文档分类
	AuthorID  uint           `gorm:"column:author_id;not null;index" json:"author_id"`          // 作者ID
	CreatedAt time.Time      `gorm:"column:created_at" json:"created_at"`
	UpdatedAt time.Time      `gorm:"column:updated_at" json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`                              // 软删除
	Author    User           `gorm:"foreignKey:AuthorID" json:"author,omitempty"` // 关联用户（仅查询用）
}

// 表名
func (Doc) TableName() string {
	return "t_doc"
}

// 验证分类是否合法
func IsValidCategory(cat string) bool {
	switch cat {
	case CategoryTech, CategoryLife, CategoryOther:
		return true
	default:
		return false
	}
}
